package com.example.moodlevox.util;

import com.example.moodlevox.entidades.Comandos;
import java.util.ArrayList;

public class Util {

	public static Comandos acao(int menu, String comando) {

		Comandos c = new Comandos();
		ArrayList<String> contatosBuscados = new ArrayList<String> ();

		switch (menu) {
		case 0:
			//fazer um equals melhor
			if (compare(comando, "disciplina")) {
				c.setMenu(1);
				// buscar as disciplinas correntes do usuario e colocar no texto
				c.setTexto("As disciplinas atuais s‹o: 1. Redes, 2. Ingl�s, 3. L—gica de Programa�‹o. Qual disciplina deseja acessar?");
			} else if (compare(comando, "mensagem")) {
				c.setMenu(2);
				c.setTexto("Acesso ao menu de mensagens, qual o comando desejado?");
			} else {
				c.setMenu(0);
				c.setTexto("Comando n‹o reconhecido");
			}
			break;

			//Menu Disciplina, Opcoes: Redes Ingle e Logica
		case 1:
			c.setTexto("Acessada a disciplina " + comando);
			if(compare(comando, "redes")){
				c.setMenu(11);
				c.setTexto("As secçoes atuais sao: 1. Aulas, 2. Forum. Que secçao da disciplina de Redes voce deseja acessar?");
			}else if(compare(comando, "inglês")){
				c.setMenu(12);
				c.setTexto("As secçoes atuais sao: 1. Aulas, 2. Forum. Que secçao da disciplina de inglês voce deseja acessar?");
			}else if(compare(comando, "lógica de programação")){
				c.setMenu(13);
				c.setTexto("As secçoes atuais sao: 1. Aulas, 2. Forum. Que secçao da disciplina de lógica de programação voce deseja acessar?");
			}else if(compare(comando, "voltar")){
				c.setMenu(0);
				c.setTexto("Voltando para o menu anterior");
			}else {
				c.setMenu(1);
				c.setTexto("Comando n‹o reconhecido");
			}
			
			break;
		
					//Menu disciplina Redes, Opcoes: Aulas, Chat, Forum
                    case 11:
						c.setTexto("Acessada a secçao" + comando);
						if(compare(comando, "forum")){
							c.setMenu(111);
							c.setTexto("As acoes atuais sao: 1. Listar Forum, 2. Listar Topico, 3. Listar Postagens, 4. Postar. Qual acao deseja realizar?");
						}else if(compare(comando, "aulas")){
							c.setMenu(112);
							c.setTexto("As acoes atuais sao: 1. Aula1, 2. Aula2, 3. Aula3. Qual acao deseja realizar?");
						}else if(compare(comando, "chat")){
							c.setMenu(113);
							c.setTexto("As acoes atuais sao: 1. Sala1, 2. Sala2. Qual acao deseja realizar?");
						}else if(compare(comando, "voltar")){
							c.setMenu(1);
							c.setTexto("Voltando para o menu anterior");
						}else {
							c.setMenu(11);
							c.setTexto("Comando n‹o reconhecido");
						}
						
						break;
					
								//Menu Disciplina Redes Seccao Forum, Opcoes: Listar Forum, Listar Topico, Listar Postagens, Postar
								case 111:
									c.setTexto("Executando Acao" + comando);
									if(compare(comando,"listar forum")){
										c.setMenu(1111);
										c.setTexto("Os Forum Serao Listados");
									}else if(compare(comando, "listar topico")){
										c.setMenu(1112);
										c.setTexto("Os topicos serao listados");
									}else if(compare(comando, "listar postagens")){
										c.setMenu(1113);
										c.setTexto("as postagens serao listadas");
									}else if(compare(comando, "postar")){
										c.setMenu(1114);
										c.setTexto("Defina oque sera postado");
									}else if(compare(comando, "voltar")){
										c.setMenu(11);
										c.setTexto("Voltando para o menu anterior");
									}else {
										c.setMenu(111);
										c.setTexto("Comando n‹o reconhecido");
									}
									
									break;
											
											//Menu Disciplina Redes Seccao Forum Acao Listar Forum
											case 1111:
												c.setTexto("sem Foruns para serem listados");
												c.setMenu(111);
												
												break;
												
											//Menu Disciplina Redes Seccao Forum Acao Listar Topico
											case 1112:
												c.setTexto("sem topicos para serem listados");
												c.setMenu(111);
												
												break;
											
											//Menu Disciplina Redes Seccao Forum Acao Listar Postagens
											case 1113:
												c.setTexto("sem postagens para serem listadas");
												c.setMenu(111);
												
												break;
											
											//Menu Disciplina Redes Seccao Forum Acao Postar
											case 1114:
												c.setTexto("Sua Postagem"+ comando + "Foi Postada com Sucesso");
												c.setMenu(111);
												
												break;
												
								//Menu Disciplina Redes Seccao Aulas, Opcoes: Aula1, Aula2, Aula3...	
								case 112:
									c.setTexto("Executando Acao" + comando);
									if(compare(comando, "Aula1")){
										c.setMenu(1121);
										c.setTexto("A aula de numero 1 ira comecar");
									}else if(compare(comando, "Aula2")){
										c.setMenu(1122);
										c.setTexto("A aula de numero 2 ira comecar");
									}else if(compare(comando, "Aula3")){
										c.setMenu(1123);
										c.setTexto("A aula de numero 3 ira comecar");
									}else if(compare(comando, "voltar")){
										c.setMenu(11);
										c.setTexto("Voltando para o menu anterior");
									}else {
										c.setMenu(112);
										c.setTexto("Comando n‹o reconhecido");
									}
									
									break;
											
											//Menu Disciplina Redes Seccao Aulas Acao Aula1
											case 1121:
												c.setTexto("404 Aula1 Not Found");
												c.setMenu(112);
												
												break;
											
											//Menu Disciplina Redes Seccao Aulas Acao Aula2
											case 1122:
												c.setTexto("404 Aula2 Not Found");
												c.setMenu(112);
												
												break;
											
											//Menu Disciplina Redes Seccao Aulas Acao Aula3
											case 1123:
												c.setTexto("404 Aula3 Not Found");
												c.setMenu(112);
												
												break;
												
																	//Menu disciplina Ingles, Opcoes: Aulas, Chat, Forum
						case 12:
							c.setTexto("Acessada a secçao" + comando);
							if(compare(comando, "forum")){
								c.setMenu(121);
								c.setTexto("As acoes atuais sao: 1. Listar Forum, 2. Listar Topico, 3. Listar Postagens, 4. Postar. Qual acao deseja realizar?");
							}else if(compare(comando, "aulas")){
								c.setMenu(122);
								c.setTexto("As acoes atuais sao: 1. Aula1, 2. Aula2, 3. Aula3. Qual acao deseja realizar?");
							}else if(compare(comando, "chat")){
								c.setMenu(123);
								c.setTexto("As acoes atuais sao: 1. Sala1, 2. Sala2. Qual acao deseja realizar?");
							}else if(compare(comando, "voltar")){
								c.setMenu(1);
								c.setTexto("Voltando para o menu anterior");
							}else {
								c.setMenu(12);
								c.setTexto("Comando n‹o reconhecido");
							}
							
							break;
						
									//Menu Disciplina Ingles Seccao Forum, Opcoes: Listar Forum, Listar Topico, Listar Postagens, Postar
									case 121:
										c.setTexto("Executando Acao" + comando);
										if(compare(comando,"listar forum")){
											c.setMenu(1211);
											c.setTexto("Os Forum Serao Listados");
										}else if(compare(comando, "listar topico")){
											c.setMenu(1212);
											c.setTexto("Os topicos serao listados");
										}else if(compare(comando, "listar postagens")){
											c.setMenu(1213);
											c.setTexto("as postagens serao listadas");
										}else if(compare(comando, "postar")){
											c.setMenu(1214);
											c.setTexto("Defina oque sera postado");
										}else if(compare(comando, "voltar")){
											c.setMenu(12);
											c.setTexto("Voltando para o menu anterior");
										}else {
											c.setMenu(121);
											c.setTexto("Comando n‹o reconhecido");
										}
										
										break;
												
												//Menu Disciplina Ingles Seccao Forum Acao Listar Forum
												case 1211:
													c.setTexto("sem Foruns para serem listados");
													c.setMenu(121);
													
													break;
													
												//Menu Disciplina Ingles Seccao Forum Acao Listar Topico
												case 1212:
													c.setTexto("sem topicos para serem listados");
													c.setMenu(121);
													
													break;
												
												//Menu Disciplina Ingles Seccao Forum Acao Listar Postagens
												case 1213:
													c.setTexto("sem postagens para serem listadas");
													c.setMenu(121);
													
													break;
												
												//Menu Disciplina Ingles Seccao Forum Acao Postar
												case 1214:
													c.setTexto("Sua Postagem"+ comando + "Foi Postada com Sucesso");
													c.setMenu(121);
													
													break;
													
									//Menu Disciplina Ingles Seccao Aulas, Opcoes: Aula1, Aula2, Aula3...	
									case 122:
										c.setTexto("Executando Acao" + comando);
										if(compare(comando, "Aula1")){
											c.setMenu(1221);
											c.setTexto("A aula de numero 1 ira comecar");
										}else if(compare(comando, "Aula2")){
											c.setMenu(1222);
											c.setTexto("A aula de numero 2 ira comecar");
										}else if(compare(comando, "Aula3")){
											c.setMenu(1223);
											c.setTexto("A aula de numero 3 ira comecar");
										}else if(compare(comando, "voltar")){
											c.setMenu(12);
											c.setTexto("Voltando para o menu anterior");
										}else {
											c.setMenu(112);
											c.setTexto("Comando n‹o reconhecido");
										}
										
										break;
												
												//Menu Disciplina Ingles Seccao Aulas Acao Aula1
												case 1221:
													c.setTexto("404 Aula1 Not Found");
													c.setMenu(122);
													
													break;
												
												//Menu Disciplina Ingles Seccao Aulas Acao Aula2
												case 1222:
													c.setTexto("404 Aula2 Not Found");
													c.setMenu(122);
													
													break;
												
												//Menu Disciplina Ingles Seccao Aulas Acao Aula3
												case 1223:
													c.setTexto("404 Aula3 Not Found");
													c.setMenu(122);
													
													break;
													
									//Menu Disciplina Ingles Seccao Chat, Opcoes: Sala1, Sala2...
									case 123:
										c.setTexto("Executando Acao" + comando);
										if(compare(comando, "Sala1")){
											c.setMenu(1231);
											c.setTexto("Entrando na sala de chat numero 1");
										}else if(compare(comando,"Sala2")){
											c.setMenu(1232);
											c.setTexto("Entrando na sala de chat numero 2");
										}else if(compare(comando, "Sala3")){
											c.setMenu(1233);
											c.setTexto("Entrando na sala de chat numero 3");
										}else if(compare(comando, "voltar")){
											c.setMenu(12);
											c.setTexto("Voltando para o menu anterior");
										}else{
											c.setMenu(123);
											c.setTexto("Comando n‹o reconhecido");
										}
										
												//Menu Disciplina Ingles Seccao Chat Acao Sala1
												case 1231:
													c.setTexto("Voce esta na sala de chat numero 1");
													c.setMenu(123);
													
													break;
												
												//Menu Disciplina Ingles Seccao Chat Acao Sala2
												case 1232:
													c.setTexto("Voce esta na sala de chat numero 2");
													c.setMenu(123);
												
													break;
												
												//Menu Disciplina Ingles Seccao Chat Acao Sala3
												case 1233:
													c.setTexto("Voce esta na sala de chat numero 3");
													c.setMenu(123);
												
													break;									

                   //Menu disciplina Lógica de Programação, Opcoes: Aulas, Chat, Forum
				   case 13:
					    c.setTexto("Acessada a secçao" + comando);
						if(compare(comando, "forum")){
							c.setMenu(131);
							c.setTexto("As acoes atuais sao: 1. Listar Forum, 2. Listar Topico, 3. Listar Postagens, 4. Postar. Qual acao deseja realizar?");
						}else if(compare(comando, "aulas")){
							c.setMenu(132);
							c.setTexto("As acoes atuais sao: 1. Aula1, 2. Aula2, 3. Aula3. Qual acao deseja realizar?");
						}else if(compare(comando, "chat")){
							c.setMenu(133);
							c.setTexto("As acoes atuais sao: 1. Sala1, 2. Sala2. Qual acao deseja realizar?");
						}else if(compare(comando, "voltar")){
							c.setMenu(1);
							c.setTexto("Voltando para o menu anterior");
						}else {
							c.setMenu(13);
							c.setTexto("Comando n‹o reconhecido");
						}
						
						break;
					
								//Menu Disciplina Lógica de Programação Seccao Forum, Opcoes: Listar Forum, Listar Topico, Listar Postagens, Postar
								case 131:
									c.setTexto("Executando Acao" + comando);
									if(compare(comando,"listar forum")){
										c.setMenu(1311);
										c.setTexto("Os Forum Serao Listados");
									}else if(compare(comando, "listar topico")){
										c.setMenu(1312);
										c.setTexto("Os topicos serao listados");
									}else if(compare(comando, "listar postagens")){
										c.setMenu(1313);
										c.setTexto("as postagens serao listadas");
									}else if(compare(comando, "postar")){
										c.setMenu(1314);
										c.setTexto("Defina oque sera postado");
									}else if(compare(comando, "voltar")){
										c.setMenu(13);
										c.setTexto("Voltando para o menu anterior");
									}else {
										c.setMenu(131);
										c.setTexto("Comando n‹o reconhecido");
									}
									
									break;
											
											//Menu Disciplina Lógica de Programação Seccao Forum Acao Listar Forum
											case 1311:
												c.setTexto("sem Foruns para serem listados");
												c.setMenu(131);
												
												break;
												
											//Menu Disciplina Lógica de Programação Seccao Forum Acao Listar Topico
											case 1312:
												c.setTexto("sem topicos para serem listados");
												c.setMenu(131);
												
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Forum Acao Listar Postagens
											case 1313:
												c.setTexto("sem postagens para serem listadas");
												c.setMenu(131);
												
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Forum Acao Postar
											case 1314:
												c.setTexto("Sua Postagem"+ comando + "Foi Postada com Sucesso");
												c.setMenu(131);
												
												break;
												
								//Menu Disciplina Lógica de Programação Seccao Aulas, Opcoes: Aula1, Aula2, Aula3...	
								case 132:
									c.setTexto("Executando Acao" + comando);
									if(compare(comando, "Aula1")){
										c.setMenu(1321);
										c.setTexto("A aula de numero 1 ira comecar");
									}else if(compare(comando, "Aula2")){
										c.setMenu(1322);
										c.setTexto("A aula de numero 2 ira comecar");
									}else if(compare(comando, "Aula3")){
										c.setMenu(1323);
										c.setTexto("A aula de numero 3 ira comecar");
									}else if(compare(comando, "voltar")){
										c.setMenu(13);
										c.setTexto("Voltando para o menu anterior");
									}else {
										c.setMenu(132);
										c.setTexto("Comando n‹o reconhecido");
									}
									
									break;
											
											//Menu Disciplina Lógica de Programação Seccao Aulas Acao Aula1
											case 1321:
												c.setTexto("404 Aula1 Not Found");
												c.setMenu(132);
												
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Aulas Acao Aula2
											case 1322:
												c.setTexto("404 Aula2 Not Found");
												c.setMenu(132);
												
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Aulas Acao Aula3
											case 1323:
												c.setTexto("404 Aula3 Not Found");
												c.setMenu(132);
												
												break;
												
								//Menu Disciplina Lógica de Programação Seccao Chat, Opcoes: Sala1, Sala2...
								case 133:
									c.setTexto("Executando Acao" + comando);
									if(compare(comando, "Sala1")){
										c.setMenu(1331);
										c.setTexto("Entrando na sala de chat numero 1");
									}else if(compare(comando,"Sala2")){
										c.setMenu(1332);
										c.setTexto("Entrando na sala de chat numero 2");
									}else if(compare(comando, "Sala3")){
										c.setMenu(1333);
										c.setTexto("Entrando na sala de chat numero 3");
									}else if(compare(comando, "voltar")){
										c.setMenu(13);
										c.setTexto("Voltando para o menu anterior");
									}else{
										c.setMenu(133);
										c.setTexto("Comando n‹o reconhecido");
									}
									
									break;
									
											//Menu Disciplina Lógica de Programação Seccao Chat Acao Sala1
											case 1331:
												c.setTexto("Voce esta na sala de chat numero 1");
												c.setMenu(133);
												
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Chat Acao Sala2
											case 1332:
												c.setTexto("Voce esta na sala de chat numero 2");
												c.setMenu(133);
											
												break;
											
											//Menu Disciplina Lógica de Programação Seccao Chat Acao Sala3
											case 1333:
												c.setTexto("Voce esta na sala de chat numero 3");
												c.setMenu(133);
											
												break;
																				

												//EU PEGO AQUI
											case 2:
												
												if (compare(comando, "ler")) {
					        						c.setMenu(21);
													
												}
												else if (compare(comando, "escrever")) {
													c.setMenu(22);
																
												}	
												else {
													c.setMenu(0);
													c.setTexto("Comando não reconhecido");
												}
												break;
												
												
											case 21: // LER UMA MENSAGEM
												
												c.setTexto("Nova mensagem de FULANO DE TAL");
												c.setTexto("O que deseja fazer?");
												
												//CASO O USUÁRIO QUEIRA ABRIR A MENSAGEM
												if (compare(comando, "abrir")) {
					        						c.setMenu(211);
													
												}
												
												//CASO O USUÁRIO QUEIRA RESPONDER À MENSAGEM QUE RECEBEU
												else if (compare(comando, "responder")) {
													c.setMenu(2111);
																
												}	
												
												//CASO QUALQUER COISA DIFERENTE DE "EXIBIR" E "RESPONDER"
												else {
													c.setMenu(0);
													c.setTexto("Comando não reconhecido");
												}
												break;
												
												
											case 211: //EXIBINDO UMA MENSAGEM
												
												c.setTexto("FULANO DE TAL diz: Oi, tudo bem?");
												c.setTexto("O que deseja fazer?");
												
												if (compare(comando, "responder")) {
													c.setMenu(2111);
																
												}	
												else {
													c.setMenu(0);
													c.setTexto("Comando não reconhecido");
												}
												break;
												
												
											case 2111: //RESPONDENDO À UMA MENSAGEM RECEBIDA
												
												c.setTexto("Diga que mensagem deseja enviar");
												
												break;
												
												
											case 221: //BUSCAR CONTATO
												
												c.setTexto("Informe o destinatário");
												
												String[] contatos = {"Alana Luna", "Alana Aguiar","Alana Oliveira" ,"Pedro Jatobá", "Yuri", "Jhonathan"};
												int invalido = 0;
												
													
													for(int i = 0; i<contatos.length; i++){
														
														compare(contatos[i],comando);
															
														//SE O CONTATO ARMAZENADO FOR IGUAL AO COMANDO DO USUÁRIO
														//O ARRAYLIST CONTATOSBUSCADOS RECEBE O CONTATO QUE FOI EQUIVALENTE AO COMANDO
															
														if(contatos[i] == comando){
																				
																contatosBuscados.add(contatos[i]);
																invalido = 0;
																break;
															}
															
															else{
																invalido = 1;
															}	
															
												   }
													
													if(invalido == 0){
														
														c.setMenu(2211);
													}
													
													else  if(invalido == 1){
														c.setTexto("Contato não existe");
														c.setMenu(0);
												   }
													
												break;

												
											case 2211: //LISTAR CONTATOS ENCONTRADOS
												
												//É INFORMADO AO USUÁRIO TODOS OS CONTATOS ARMAZENADOS NO ARRAYLIST 
												
												while(!contatosBuscados.isEmpty()){  
													c.setTexto(contatosBuscados.remove(0));  
												}  
												
												c.setTexto("Seu destinatário foi encontrado?");
												
												if(comando == "sim"){
												
													c.setMenu(22111);
												}
												
												else if(comando == "não"){
													
													c.setMenu(2212);
												}
												
												break;
												
											case 22111: //SE O CONTATO ESTA CORRETO: ESCREVER E ENVIAR MENSAGEM
												
												c.setTexto("Deseja escrever para qual contato?");
												
												for (int i = 0; i < contatosBuscados.size(); i++) {  
													c.setTexto(i + contatosBuscados.get(i));  
										  
										        }  
												
												c.setTexto("");
												c.setTexto("Diga a mensagem que deseja enviar");
												c.setTexto("Enviando mensagem para " + comando + ". Mensagem enviada com sucesso.");
												
												c.setMenu(0);
												break;
											
											case 2212:
												
												c.setMenu(221);
												break;

											default:
												c.setMenu(0);
												c.setTexto("Comando não reconhecido");
												break;
											}
											
											
											return c;
										}

										public static boolean compare(String a, String b){
											boolean resp = false;
											
											char[] correto = b.toCharArray();
											char[] testado = a.toCharArray();
											
											int acertos = 0;
											
											for (int i = 0; i < correto.length; i++) {
												if(correto[i]==testado[i]){
													acertos++;
												}
											}
											
											// 75???
											resp = ((acertos/correto.length)*100) > 75 ? true : false;
											
											return resp;
										}
									}
